CPU

CPU CLASSROOM

CPU 小教室

同樣時脈為什麼速度不同?加了核心,工作為什麼仍在等?從具體例子理解 CPU、資料與平行工作,再依興趣閱讀 Arm、RISC-V 與設計選修。未完成課程會明確標示規劃中。

CPU CLASSROOM · COURSE MAP

一項工作,CPU 怎麼把它做好?

同樣一項工作,換了 CPU 或增加核心,為什麼速度不一定跟著變?跟著 MY 老師與 MY 機器人,先看工作在哪裡等待,再理解核心與資料如何合作。每課用具體例子說明機制、代價與適用條件。

26課規劃3課已上線4課設計選修
從第一課開始 → 查看完整課程大綱 ↓
MY 老師與 MY 機器人探索四核心處理器與記憶體,橘色箭頭代表工作流動
跟著 MY 老師與 MY 機器人,探索核心、資料與系統。

選一條適合你的閱讀路線

第一次閱讀,可先從已提供的單核、多核與 Cache 課程建立直覺。完整規劃則用前六課打好效能與平行工作的基礎,再依先修條件選擇記憶體、Arm 或 RISC-V 支線。路線中的規劃中課程尚無正文,不需要把 26 課都讀完才能開始。

26 LESSONS · 5 STAGES

CPU 小教室完整課程大綱

22 課觀念與分析+4 課設計選修。已有內容可直接閱讀;規劃中課程會逐課製作,題目與順序仍可調整。

單元 01 · 1–6

從核心效能到平行工作

從第一課的 CPU 工廠出發,理解單核、多核、SIMD 與 SMT,再學會公平量測。

  1. 01

    同樣 GHz,為什麼效能會差很多?

    讀後能做什麼:分清 GHz 與 IPC,理解寬度、預測、亂序執行與資料等待。

    先修:不需前課 · 基本程式與指令概念

    閱讀這一課 →
  2. 02

    核心增加,工作為什麼沒有等比例變快?

    讀後能做什麼:辨認序列工作、共享瓶頸與負載不均,提出可驗證的量測問題。

    先修:第 1 課

    閱讀這一課 →
  3. 03

    平行程式與效率

    規劃中

    8 核心處理照片,為什麼只快 4 倍?

    讀後能做什麼:用時間軸比較分工方式,計算加速比與平行效率,檢查結果正確性。

    先修:第 1 課、第 2 課

    本課仍在規劃中,將比較工作怎麼分、誰先做完,以及協調和合併結果的成本。大綱中的 80 → 23 → 20 秒是教學模型,並非實測。

  4. 04

    SIMD 向量運算

    規劃中

    一條指令,能不能同時處理一排像素?

    讀後能做什麼:追蹤向量分批、遮罩與尾端處理,分清 SIMD 與多核心。

    先修:第 1 課、第 3 課

  5. 05

    SMT 與硬體執行緒

    規劃中

    8 核心、16 執行緒,究竟多了什麼?

    讀後能做什麼:理解執行緒共用資源,判斷隱藏等待與資源競爭的取捨。

    先修:第 1 課

  6. 06

    效能診斷與量測

    規劃中

    是算不動、資料送不來,還是量測有問題?

    讀後能做什麼:建立公平基準,固定輸入與計時範圍,再驗證瓶頸假說。

    先修:第 1 課、第 2 課、第 3 課、第 4 課、第 5 課

單元 02 · 7–12

資料、記憶體與系統合作

先追蹤資料放在哪裡、如何被讀取,再看多核心副本如何交接。把記憶體順序、遠近距離與能源成本接回同一項工作的選擇。

  1. 07

    資料排列與重用

    規劃中

    同樣的演算法,換個資料走法為什麼差很多?

    讀後能做什麼:用 stride、AoS/SoA 與 blocking 改善資料重用。

    先修:第 1 課、第 4 課、第 6 課

  2. 08

    虛擬記憶體與 TLB

    規劃中

    程式看到的地址,如何找到真正的資料?

    讀後能做什麼:紙上追蹤位址轉譯,分清 TLB miss、cache miss 與 page fault。

    先修:第 1 課、第 7 課

  3. 09

    多個核心保存的資料副本,如何維持一致?

    讀後能做什麼:追蹤 cache line 的讀寫與 ownership,理解 MESI、Directory 與 False Sharing。

    先修:第 1 課、第 7 課

    這一課已可閱讀,排在大綱的第 9 課。可以先理解副本與寫入權交接,遇到資料排列問題時,再回看先修規劃。

    閱讀這一課 →
  4. 10

    記憶體順序與同步

    規劃中

    收到完成通知,為什麼仍可能讀到舊資料?

    讀後能做什麼:分清一致性與順序,用合法原子操作理解 acquire/release 與同步。

    先修:第 3 課、第 9 課

  5. 11

    NUMA 與互連

    規劃中

    同一台機器的記憶體,為什麼也有遠近?

    讀後能做什麼:在節點圖安排工作與資料,解釋 placement、affinity 與拓樸。

    先修:第 6 課、第 8 課、第 9 課

  6. 12

    能源與大小核心

    規劃中

    趕快算完與慢慢省電,哪個更省能源?

    讀後能做什麼:以相同工作量比較功耗與能量,理解 DVFS 與異質排程。

    先修:第 1 課、第 5 課、第 6 課

單元 03 · 13–17

理解 ISA,走進 Arm

先分清指令規則與實作,再讀 Arm 家族、A64 與向量,最後用 x86 看另一種前端設計。

  1. 13

    ISA、微架構與軟體分層

    規劃中

    指令規則、CPU 核心、SoC 與作業系統,各負責什麼?

    讀後能做什麼:分清 ISA、微架構、ABI、OS 與工具鏈,為 Arm/RISC-V 支線打底。

    先修:第 1 課、第 3 課 · 基本 C 函式概念

  2. 14

    Arm 架構地圖

    規劃中

    Cortex-A、R、M 為什麼服務不同需求?

    讀後能做什麼:辨認 A/R/M profiles 與設計情境,分清架構與實作。

    先修:第 13 課

  3. 15

    第一支 A64 程式

    規劃中

    加總程式,如何變成暫存器、載入與跳躍?

    讀後能做什麼:逐步追蹤短函式與 AAPCS64 基本呼叫約定。

    先修:第 13 課、第 14 課

  4. 16

    Arm Neon 與 SVE

    規劃中

    如何處理整批資料,以及最後不足一批的部分?

    讀後能做什麼:比較向量尾端、predication 與功能支援條件。

    先修:第 4 課、第 15 課

  5. 17

    x86 與指令前端

    規劃中

    複雜指令如何進入現代 CPU?

    讀後能做什麼:理解編碼、decode 與 micro-ops,不用指令數直接推論速度。

    先修:第 1 課、第 13 課

單元 04 · 18–22

RISC-V 與跨架構移植

從開放標準到實際程式、特權系統與向量,再回到同一份軟體如何跨平臺運作。

  1. 18

    RISC-V 的開放與擴充

    規劃中

    開放的是指令規則,還是整顆晶片?

    讀後能做什麼:分清 base、extensions、profiles、實作授權與產品成本。

    先修:第 13 課

  2. 19

    第一支 RV32I 程式

    規劃中

    CPU 如何一步步執行一段整數加總?

    讀後能做什麼:追蹤 PC、暫存器、load/store 與 branch,建立指令語意基礎。

    先修:第 13 課、第 18 課

  3. 20

    特權、例外與作業系統

    規劃中

    誰能改設定、處理中斷與翻譯位址?

    讀後能做什麼:追蹤 RV64 系統的 trap 與 CSR,分清 CPU、韌體及 OS 責任。

    先修:第 8 課、第 10 課、第 19 課

  4. 21

    RISC-V Vector

    規劃中

    不同向量長度,怎麼共用一份程式?

    讀後能做什麼:追蹤 vl、VLEN、SEW、mask 與 strip-mining 的最後一批。

    先修:第 4 課、第 18 課、第 19 課

  5. 22

    跨架構移植

    規劃中

    重新編譯,為什麼還不一定能跑?

    讀後能做什麼:用 ABI、函式庫、OS、驅動與功能偵測檢查表定位移植問題。

    先修:第 13 課、第 15 課、第 17 課、第 19 課

單元 05 · 23–26

CPU 設計與驗證選修

想動手的讀者可從教學子集建立小 CPU,加入管線、驗證,再量化設計取捨。沒有 RTL 背景也能先做紙上推演。

  1. 23

    做出教學用小 CPU

    規劃中選修

    指令如何驅動資料路徑與控制訊號?

    讀後能做什麼:畫出 PC、ALU、暫存器與控制 FSM;明列教學子集,不宣稱完整 RV32I。

    先修:第 19 課 · 動手版本另需同步 RTL、valid/ready 與 testbench

  2. 24

    Pipeline 與相依衝突

    規劃中選修

    指令重疊執行,為什麼會讀到舊值?

    讀後能做什麼:辨認 RAW,安排 forwarding、stall、flush 與記憶體 backpressure。

    先修:第 23 課

  3. 25

    CPU 驗證

    規劃中選修

    算對幾個例子,為什麼仍不能交付?

    讀後能做什麼:建立 reference model、差分 trace、assertions 與可重現失敗案例;驗證從第 23 課就開始。

    先修:第 23 課、第 24 課

  4. 26

    CPU 設計專題

    規劃中選修

    同一份預算,該加核心、加快取還是改程式?

    讀後能做什麼:以 workload、延遲、吞吐與能源評估方案,分開教學模型與實測證據。

    先修:第 6 課、第 12 課、第 22 課 · RTL 路線另讀第 25 課

已上線的小教室